﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GrayParrot.Core
{
    /// <summary>
    /// Name value standard class...
    /// </summary>
    /// <remarks>
    /// The standard NameValue class have the two properties as string...
    /// </remarks>
    public class GroupedNameValue : NameValue
    {
        /// <summary>
        /// Gets or sets the name...
        /// </summary>
        /// <value>
        /// The name.
        /// </value>
        public string name { get; set; }
        /// <summary>
        /// Gets or sets the value...
        /// </summary>
        /// <value>
        /// The value.
        /// </value>
        public string value { get; set; }
        /// <summary>
        /// Gets or sets the group name...
        /// </summary>
        /// <value>
        /// The group.
        /// </value>
        public string Group { get; set; }

        public GroupedNameValue()
        {
        }
    }


    /// <summary>
    /// Name value generic class...
    /// </summary>
    /// <typeparam name="N">The type of the Name property</typeparam>
    /// <typeparam name="V">The type of the Value property</typeparam>
    /// <remarks>
    /// The generic NameValue class permits to specifiyng the types for the two properties...
    /// </remarks>
    public class GroupedNameValue<N, V> : NameValue<N, V>
    {
        /// <summary>
        /// Gets or sets the name.
        /// </summary>
        /// <value>
        /// The name.
        /// </value>
        public N name { get; set; }
        /// <summary>
        /// Gets or sets the value.
        /// </summary>
        /// <value>
        /// The value.
        /// </value>
        public V value { get; set; }
        /// <summary>
        /// Gets or sets the group name...
        /// </summary>
        /// <value>
        /// The group.
        /// </value>
        public string Group { get; set; }

        public GroupedNameValue()
        {

        }
    }
}
